/*
 * colas.c
 *
 *  Created on: 27/09/2011
 *      Author: utn_so
 */

#include <stdlib.h>
#include <stdio.h>

typedef struct ColaNodo {
	void* dato;
	struct ColaNodo *sig;
} colaNodo;

typedef struct {
	colaNodo *cabeza, *fin;
} tcola;

typedef tcola *cola;

cola cola_Crear() {
	cola Cola;
	Cola = (tcola *) malloc(sizeof(tcola));
	Cola->fin = Cola->cabeza = (colaNodo *) malloc(sizeof(colaNodo));
	Cola->fin->sig = NULL;
	return Cola;
}

void cola_Agregar(void* dato, cola Cola) {
	Cola->fin->sig = (colaNodo *) malloc(sizeof(colaNodo));
	Cola->fin = Cola->fin->sig;
	Cola->fin->dato = dato;
	Cola->fin->sig = NULL;
}

void* cola_Sacar(cola Cola) {
	colaNodo *ptr;
	void* dato;
	dato=(Cola->cabeza->sig->dato);
	ptr = Cola->cabeza;
	Cola->cabeza = Cola->cabeza->sig;
	free(ptr);
	return dato;
}

void cola_Destruir(cola Cola){
	while(!(Cola->cabeza == Cola->fin))
		cola_Sacar(Cola);
	free(Cola->cabeza);
	free(Cola);
}


